`include "../define.svh"
module is_sub (
    input [1:0] data_type,
    input [31:0] data_in,
    output reg is_sub_flag
);
    
    wire fp16_e_is_zero, fp32_e_is_zero;
    assign fp16_e_is_zero = ~|data_in[14:10];
    assign fp32_e_is_zero = ~|data_in[30:23];

    wire fp16_m_non_zero, fp32_m_non_zero;
    assign fp16_m_non_zero = |data_in[9:0];
    assign fp32_m_non_zero = |data_in[22:0];

    always @(*) begin
        case (data_type)
            `FP16: is_sub_flag = fp16_e_is_zero && fp16_m_non_zero;
            `FP32: is_sub_flag = fp32_e_is_zero && fp32_m_non_zero;
            default: is_sub_flag = 1'b0;
        endcase
    end
endmodule